/***********************************************************************************
 * 文件名： btn_ctrl_static.h
 * 版本： 4
 * 说明：
 * 		独立按钮控制器。扫描按钮，报告各种按钮事件。静态定义意味着只支持1个按钮，多个按钮请
 *  使用 btn_ctrl 组件。
 *      在合适的地方调用 Btn_Loop 确保其间隔10ms左右会被执行一次。当有按钮事件发生时，本组件
 *  会通过调用 Btn_Event 来进行通知，所以请在需要的地方实现 void Btn_Event(btn_ev_t e) 函
 *  数来接收按钮事件。
 *      在文件 btn_ctrl_config.h 中进行合适的配置。
 * 修改记录：
 * 	2021/04/21: 初版。 刘言。
 *  2021/05/12: 增加 Btn_IsDown()。刘言。
 *  2021/08/19: 支持完整版 POLSYS 。新增 Btn_Init 函数和 _Btn_HwInit 配置。
 *  2021/08/20: 新增消抖配置项。
***********************************************************************************/
#ifndef _BTN_CTRL_STATIC_H_
#define _BTN_CTRL_STATIC_H_

#include "stddef.h"
#ifdef __NO_INCLUDE_PATH
#include "..\..\..\projects\prj\App\btn_ctrl_config.h"
#else
#include "btn_ctrl_config.h"
#endif
#include "..\..\polsys.h"

typedef enum _btn_ev
{
    _BTN_EV_NULL,
    BTN_EV_DOWN,
    BTN_EV_UP,
    BTN_EV_CLICK,
    BTN_EV_CLICK_2,
    BTN_EV_CLICK_3,
    BTN_EV_CLICK_4,
    BTN_EV_CLICK_5,
    BTN_EV_LONG_PRESS,
    _BTN_EV_END
}btn_ev_t;



#ifdef _BTN_USE_IS_DOWN_FUNC
extern bit _Btn_mIsDown;
#endif


// APIs

#ifdef POLSYS_LITE
// 任务函数，这个函数必须按照要求定时调用（看作是线程入口）
// 间隔10ms调用
void Btn_Loop();
#endif

// 初始化
// 如果使用完整 POLSYS 必须调用，使用 POLSYS_LITE 调用时等于调用 _Btn_HwInit 宏。
void Btn_Init();


#ifdef _BTN_USE_IS_DOWN_FUNC
#define Btn_IsDown()    _Btn_mIsDown
#endif

#endif
